<?php

/**
 * 
 * 
 * Copyright (C) 2013 A.Tercier, C.Iseli, L.Carminati, G.Bergerat 
 * 
 * This file is part of Mediathor.
 * 
 * Mediathor is free software: you can redistribute it and/or modify it under the terms of the
 * GNU General Public License as published by the Free Software Foundation, either version 2 of the
 * License, or (at your option) any later version.
 * 
 * Mediathor is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * 
 * See the GNU General Public License for more details. You should have received a copy of the GNU
 * General Public License along with Mediathor. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Authors: A.Tercier, C.Iseli, L.Carminati, G.Bergerat 
 */

/**
 * Explications de la fonction = Affiche les inforations sur l'image affichée
 * @return = Informations sur l'image
 * @param = Nom de l'image 
 * Authors: A.Tercier, C.Iseli
 */
function ImgInfo() {
	$nomimg = $_SESSION['FichierComplet'];
	if(file_exists($nomimg)){
		if(isset($_GET['Ext']) AND $_GET['Ext'] == 'jpg'){
			$nom = false;
			// Récupère les informations de l'image
			$exif = exif_read_data($nomimg, 0, true);
			// Parcours le tableau
			foreach ($exif as $key => $section) {
				foreach ($section as $name => $val) {
					// Prends les informations utiles
					switch ($name) {
						// Nom du fichier
						case 'FileName':
							if ($nom == false){
								echo "<p class=\"info\"><span class=\"categorie\">Nom de fichier:</span> $val</p>";
								$nom = true;
							}
							break;
						// Date de modification du fichier
						case 'FileDateTime':
							echo "<p class=\"info\"><span class=\"categorie\">Date:</span> ".date('d/m/Y', $val)."</p>";
							break;
						// Hauteur du fichier
						case 'Height':
							echo "<p class=\"info\"><span class=\"categorie\">Hauteur:</span> $val</p>";
							break;
						// Largeur du fichier
						case 'Width':
							echo "<p class=\"info\"><span class=\"categorie\">Largeur:</span> $val</p>";
							break;
						// Commentaire complémentaire
						case 'Info':
							echo "<p class=\"info\"><span class=\"categorie\">Commentaire:</span> $val</p>";
							break;
					}
				}
			}
		}
	}
	else{
		echo 'L\'image n\'existe pas.';
	}
}

/**
 * Affiche l'image sélectionnée.
 * Authors: G.Bergerat, A.Tercier
 */
function ImgPlay(){
	echo '<div class="ImagePlayer" style="background-image:url('.$_SESSION['FichierComplet'].');"></div>';
}

/**
 * Affiche le navigateur d'images.
 * Authors: G.Bergerat, A.Tercier
 */
function ImgBrowse()
{
  $Repertoire = './Data/Photos';
  echo BrwsGallerie($Repertoire);
}

/**
 * Copie le contenu d'un dossier dans un tableau en filtrant les noms.
 * @param  $nomDossier = Dossier à scanner
 * @param  $filtre     = les fichiers à garder
 * @return tableau des fichiers dans le dossier
 * Authors: G.Bergerat, L.Carminati
 */
function ImgReadDir($nomDossier, $filtre) {
    $reponse = array();

    // Lit le dossier
    if (is_dir($nomDossier)) {
        // Le met dans la variable du dossier
        $dossier = opendir($nomDossier);

        // Si le dossier existe
        if ($dossier != false) {
            // tant qu'il y a des fichiers à lire
            while (($file = readdir($dossier)) !== false) {
                // Si le chemin est un fichier
                if (filetype($nomDossier . '/' . $file) == 'file') {
                    // Alors on lit le nom du fichier et on analyse le nom de l'extension et si il est égal au filtre donné 
                    if (substr($file, strlen($file) - 4) == $filtre) {
                        // On met l'image dans le tableau
                        $reponse[] = $file;
                    }
                }
            }
            // Fermer le fichier
            closedir($dossier);
        }
    }
    // Retourne le tableau contenant les images
    return $reponse;
}

/**
 * Retourne le nom du prochain fichier dans le dossier
 * @return Le nom du fichier suivant avec son chemin d'accès
 * Authors: G.Bergerat, L.Carminati 
 */
function ImgGetNext() {
	// Filtre les images par extension
    $files = ImgReadDir($_SESSION['imgDir'], '.jpg');
	// compte le nombre d'images et le met dans une variable
    $pos = count($files);
    // On compte le nombre d'image et on met le nombre dans une variable
    for ($i = 0; $i < count($files); $i++) {
        if ($files[$i] == $_SESSION['imgFile']) {
            $pos = $i;
        }
    }
    // Si la position de l'image dans les tableau est hors-limite, on la remet à 0. Sinon on l'incrémente de 1
    if ($pos >= count($files) - 1) {
        $fichier = $files[0];
    } else {
        $fichier = $files[$pos + 1];
    }
    // La variable de session prend le nom de l'image
    $_SESSION['imgFile'] = $fichier;

    // Retourne le chemin et le nom de l'image
    return $_SESSION['imgDir'] . '/' . $fichier;
}

/**
 * Initialise le slideshow dans le dossier donné
 * @param $dossier = Nom du dossier
 * Authors: G.Bergerat, L.Carminati
 */
function ImgStart($dossier) {
    $_SESSION['imgFile'] = '';
    $_SESSION['imgDir'] = $dossier;
}

/**
 * Indique si ûn slideshow est initialisé ou non
 * @return true = slide déjà lancé, false slide pas initialisé
 * Authors: G.Bergerat, L.Carminati
 */
function ImgIsStarted() {
    return isset($_SESSION['imgDir']);
}

if (!ImgIsStarted())
    ImgStart('./images');


//Le nom du fichier devient égal à l'image suivante
$nomFichier = ImgGetNext();
?>

